package com.ruoyi.product.service;

import com.ruoyi.market.domain.dto.SkuCouponsCategoryDto;
import com.ruoyi.market.domain.dto.SkuCouponsDto;
import com.ruoyi.market.domain.vo.PaginationVo;
import com.ruoyi.product.domain.ProductActivity;
import com.ruoyi.product.domain.ProductActivityGroup;
import com.ruoyi.product.domain.dto.*;

import java.util.List;

/**
 * 活动Service接口
 *
 * @author liuhuizhong
 * @date 2025-08-13
 */
public interface IProductActivityService {
    /**
     * 查询活动
     *
     * @param activityId 活动主键
     * @return 活动
     */
    public ProductActivity selectProductActivityByActivityId(Long activityId);

    /**
     * 查询活动列表
     *
     * @param productActivity 活动
     * @return 活动集合
     */
    public List<ProductActivity> selectProductActivityList(ProductActivity productActivity);

    /**
     * 新增活动
     *
     * @param productActivity 活动
     * @return 结果
     */
    public int insertProductActivity(ProductActivity productActivity);

    /**
     * 修改活动
     *
     * @param productActivity 活动
     * @return 结果
     */
    public int updateProductActivity(ProductActivity productActivity);

    /**
     * 批量删除活动
     *
     * @param activityIds 需要删除的活动主键集合
     * @return 结果
     */
    public int deleteProductActivityByActivityIds(Long[] activityIds);

    /**
     * 删除活动信息
     *
     * @param activityId 活动主键
     * @return 结果
     */
    public int deleteProductActivityByActivityId(Long activityId);

    /**
     * 获取活动列表
     */
    List<ActivityDto> selectActivityList(ActivityDto activityDto);

    /**
     * 根据活动id获取销量最高的前8个商品
     */
    List<SkuCouponsDto> saleTop8(Long activityGroupId);

    /**
     * 根据活动id获取销量最高的商品（支持分页，返回分页信息）
     */
    ActivitySaleTopResponseDto saleTop8WithPagination(Long activityGroupId, PaginationVo pagination);

    /**
     * 根据活动id获取分类商品列表
     */
    List<SkuCouponsCategoryDto> getActivityCategoryList(Long activityGroupId);

    /**
     * 根据分类id和活动id获取不同页数的商品记录
     */
    List<SkuCouponsCategoryDto> getActivityCategoryListPage(SkuActivityCategoryRequestDto request);

    /**
     * 获取所有活动
     */
    List<ProductActivityGroup> getAllActivity();

    /**
     * 获取所有活动销量最高的前8个商品
     */
    List<SkuCouponsDto> getAllActivitySaleTop8();

    /**
     * 获取所有活动销量最高的商品（支持分页，返回分页信息）
     */
    AllActivitySaleTopResponseDto getAllActivitySaleTop8WithPagination(PaginationVo pagination);

    /**
     * 获取所有活动分类商品列表
     */
    List<SkuActivityCategoriesDto> getAllActivityCategorySkus();

    /**
     * 根据活动id获取不同页数的商品记录
     */
    List<SkuCouponsCategoryDto> getActivityPage(ActivityPageRequestDto request);
}
